//package nm.aleksey.server;
//
//import static com.googlecode.objectify.ObjectifyService.ofy;
//
//import java.util.List;
//
//import nm.aleksey.domain.Author;
//
//import com.google.web.bindery.requestfactory.shared.Locator;
////import static nm.aleksey.server.OfyService.ofy;
//
//public class AuthorLocatorOfy extends Locator<Author, Long> {
//
//  @Override
//  public Author create(Class<? extends Author> clazz) {
//    try {
//      return clazz.newInstance();
//    } catch (InstantiationException e) {
//      throw new RuntimeException(e);
//    } catch (IllegalAccessException e) {
//      throw new RuntimeException(e);
//    }
//  }
//
//  @Override
//  public Author find(Class<? extends Author> clazz, Long id) {
//    if (id == null) {
//      return null;
//    }
//    try {
//      Author user = ofy().load().type(Author.class).id(id).now();
//      return user;
//    } catch (Exception e) {
//      throw new RuntimeException(e);
//    }
//  }
//
//  public Author find(Long id) {
//    return find(Author.class, id);
//  }
//
//  public List<Author> findAll() {
//    try {
//      List<Author> resultList = ofy().load().type(Author.class).list();
//      return resultList;
//    } catch (Exception e) {
//      throw new RuntimeException(e);
//    }
//  }
//
//  @Override
//  public Class<Author> getDomainType() {
//    return Author.class;
//  }
//
//  @Override
//  public Long getId(Author domainObject) {
//    return domainObject.getId();
//  }
//
//  @Override
//  public Class<Long> getIdType() {
//    return Long.class;
//  }
//
//  @Override
//  public Object getVersion(Author domainObject) {
//    return domainObject.getVersion();
//  }
//
//  public void save(Author author) {
//    try {
//      // Logger log = Logger.getAnonymousLogger();
//      // log.info("*** Version" + author.getVersion() + " ***");
//      ofy().save().entities(author).now();
//      // log.info("*** Version" + author.getVersion() + " ***");
//    } catch (Exception e) {
//      throw new RuntimeException(e);
//    }
//  }
//
//}
